package aplicacion.util;

import java.util.ArrayList;

import excepciones.ExcepcionAgendaVacia;

import aplicacion.Agenda;
import aplicacion.Entrada;

public class GeneradorXML {
    private Agenda agenda = null;
    
    public GeneradorXML() {}
    
    public GeneradorXML(Agenda agenda) {
	setAgenda(agenda);
    }
    
    public void setAgenda(Agenda agenda) {
	this.agenda = agenda;
    }
    
    public String getXML() throws ExcepcionAgendaVacia {
	try {
	    String devolucion = "";
	    ArrayList<Entrada> entradas = (ArrayList<Entrada>)agenda.listar();
	    
	    devolucion += getCabecera();
	    devolucion += getTexto("agenda",true);
	    
	    for(int i=0;i<entradas.size();i++) {
		devolucion += listaEntrada(entradas.get(i));
	    }
	    
	    devolucion += getTexto("agenda",false);
	    
	    return devolucion;
	}
	catch(NullPointerException e) {
	    return "";
	}
    }
    
    private String listaEntrada(Entrada e) {
	String devolucion = "";
	devolucion += getTexto("entrada",true);
    	devolucion += e.toXML();
	devolucion += getTexto("entrada",false);
	return devolucion;
    }
    
    private String getTexto(String texto,Boolean apertura) {
	if(apertura) return "\t<" + texto + ">\n";
	return "\t</" + texto + ">\n";
	
    }
    
    private String getCabecera() {
	return "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
    }
}
